iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 29
1

NuGet

任何新式開發平台的基本工具都是一種機制,而開發人員可以透過此機制建立、共用和使用實用的程式碼。
這類程式碼通常會打包成「套件」,其中包含已編譯程式碼 (如 DLL),以及在取用這些套件之專案中所需的其他內容。
NuGet 套件就是副檔名為 .nupkg 的單一 ZIP 檔案,內含已編譯程式碼 (DLL)、其他與該程式碼相關的檔案,以及包含套件版本號碼這類資訊的描述性資訊清單。

簡單說就是一個共享程式碼的平台,可以把你自己的程式碼編譯成 DLL,或者加入各種相關檔案,然後包成 .nupkg 放到一個私人或公共平台與他人共享。

第一天下載的 .NET Core SDK 裡面就有附加 nuget 的工具,所以我們可以直接使用。

首先先到 NuGet Gallery | Home 裡面隨便找一個套件,這邊就找個個人比較常用的 Newtonsoft.Json,點進去就會看到

https://raw.githubusercontent.com/MMiooiMM/learn-csharp-in-30-days/master/figures/29/01.png

因為個人不太愛用 beta 版,所以看下面排除 beta 的最新版是 11.0.2,所以在 TERMIANL 輸入 dotnet add package Newtonsoft.Json --version 11.0.2

本來的 xxx.csproj 就會被修改,xxx 為你專案名稱,原先是

https://raw.githubusercontent.com/MMiooiMM/learn-csharp-in-30-days/master/figures/29/02.png

多加了套件名稱與版本

https://raw.githubusercontent.com/MMiooiMM/learn-csharp-in-30-days/master/figures/29/03.png

如果想要移除套件來看差別的話,移除套件為 dotnet remove package Newtonsoft.Json

再來就是來用這個套件了。

這是一個 Json 的序列化與反序列化的工具,在 API 介接上很常用到,相關內容就不贅述了。

using System;
using System.Collections.Generic;
using Newtonsoft.Json;

namespace demo {
  class Program {
    static void Main (string[] args) {
      var members = new List<Member> () {
        new Member () { ID = 0, Name = "Mio" },
        new Member () { ID = 1, Name = "Miffy" },
        new Member () { ID = 2, Name = "Lulu" },
        new Member () { ID = 3, Name = "NekoSan" },
        new Member () { ID = 4, Name = "MooDoooooooooooooooooo" }
      };

      // 序列化
      var json = JsonConvert.SerializeObject (members);
      Console.WriteLine ($"json = {json}");

      //反序列化
      var members2 = JsonConvert.DeserializeObject<List<Member>> (json);
      foreach (var member in members2) {
        Console.WriteLine ($"ID = {member.ID}, Name = {member.Name}");
      }
    }
    class Member {
      public int ID { get; set; }
      public string Name { get; set; }
    }
  }
}

或者在開發桌面程式時,好用的 LOG 套件 NLog,在使用時也要一併下載 NLog.ConfigNLog.InstallNLogConfig,有興趣的人可以看一下文末連結,有前輩寫的文章,這邊就不再多介紹了。

一些小結論

今天小小的介紹了 NuGet,雖然沒有講到什麼東西啦。使用 NuGet 的話,如果多人開發的話,也不怕共同開發者沒有正確載入套件,因為 .csproj 紀錄的東西在給予其他人時,只要輸入 dotnet builddotnet run 就會自動載入了。

除了上面這兩個套件外,有事沒事也可以逛逛 nuget 去找寶物,雖然大多都是前輩們分享在自己的部落格後,才會去發現啦 XD

感謝閱讀。

參考資料
什麼是 NuGet?它有哪些功能? | Microsoft Docs
NuGet Gallery | Home
NuGet Gallery | Newtonsoft.Json 12.0.1-beta1
NuGet Gallery | NLog 4.5.11
NuGet Gallery | NLog.Config 4.5.11
NuGet Gallery | NLog.InstallNLogConfig 2.0.0
mrkt 的程式學習筆記: 使用NLog - Advanced .NET Logging (1)


上一篇
DAY 28 System
下一篇
DAY 30 總結
系列文
.net 後端起手式 30天認識 C# 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言